
var http = require("http");
var fs   = require("fs");
var url  = require("url");
var path = require("path");
var querystring = require("querystring");

//定义一个MIME类型映射关系队列
var mime = {
    ".jpg" : "image/jpeg",
    ".jpeg" : "image/jpeg",
    ".png" : "image/png",
    ".gif" : "image/gif",
    ".html" : "text/html;charset=UTF-8",
    ".css" : "text/css",
    ".js" : "application/x-javascript",
    ".mp3" : "audio/mpeg",
 };


http.createServer(function(req,res){
    //res.setHeader("content-type","text/html;charset=UTF-8");
    //读取用户输入的URL信息
    var pathname = url.parse(req.url).pathname;
    //获取URL中文件的扩展名
    var extname = path.extname(pathname);
    //如果URL中不存在扩展名，此时表示这是一个文件夹，会自动补全/index.html
    if(!extname){
        //如果不是以/结尾，此时会造成浏览器识别图片路径层次有问题。
        //比如http://127.0.0.1/b和http://127.0.0.1/b/不一样。
        //同样的图片文件，前者认为是同级目录下的图片，后者认为是b文件夹中的图片。
        if(pathname.substr(-1) != "/"){
            res.writeHead(302 , {"Location" : pathname + "/" })
        }
        pathname += "/index.html";
    }
    
    //真正读取的文件
    fs.readFile("./public/" + pathname , function(err,data){
        if(err){
            res.end("没有该文件夹！");
            return;
        }
        //检查是否属于已定义的mime类型
        if(mime.hasOwnProperty(extname)){
            res.setHeader("content-type",mime[extname]);
        }
        res.end(data);
    });
}).listen(3000);

console.log("Server Start at 3000 port");